Dynamic chain of actions for iot devices

ABSTRACT

Various examples are disclosed for performing dynamic chains of action for Internet-of-Things (IoT) devices. In some aspects, IoT event data is received from an IoT device. An IoT dependency graph is identified based on an initial IoT event specified by the IoT dependency graph. An IoT event subsequent to the initial IoT event is identified according to the IoT dependency graph. A command is transmitted to an IoT device to perform the IoT event.

RELATED APPLICATIONS

Benefit is claimed under 35 U.S.C. 119(a)-(d) to Foreign ApplicationSerial No. 202041031143 filed in India entitled “DYNAMIC CHAIN OFACTIONS FOR IOT DEVICES”, on Jul. 21, 2020, by VMware, Inc., which isherein incorporated in its entirety by reference for all purposes.

BACKGROUND

The Internet-of-Things (IoT) refers to interrelated computing devices,sensors, and objects that are network-enabled such that they areperiodically able to transfer data over a network. Some IoTarchitectures include three architectural layers, including a sensorlayer, an edge system layer (also referred to as a “gateway layer”), anda server layer that may execute in a cloud hosted on the Internet.Notably, IoT solutions evaluate data collected from end devices at acloud server layer, where alerts are triggered.

In an IoT deployment, variety of sensors, actuators, and other IoTdevices can be deployed to take care of the entire process pipelinerelated to that industry. A set of operations or actions that can beperformed are generally fixed depending on the model and version of adevice. Command architectures can send individual commands but arepoorly equipped to handle complex or dynamic sequences. Where alerts aretriggered, the alerts can generally notify users of a condition or stateof an IoT device. As a result, there is a need for more effectivecommand architectures for IoT command sequencing.

BRIEF DESCRIPTION OF THE DRAWINGS

Many aspects of the present disclosure can be better understood withreference to the following drawings. The components in the drawings arenot necessarily to scale, with emphasis instead being placed uponclearly illustrating the principles of the disclosure. Moreover, in thedrawings, like reference numerals designate corresponding partsthroughout the several views.

FIG. 1 is a drawing of an example of a networked computing environmentthat includes components that perform dynamic chains of actions for IoTdevices.

FIG. 2A is a drawing that illustrates an IoT dependency graph thatspecifies a dynamic chain of actions for IoT devices.

FIG. 2B is a drawing that illustrates another IoT dependency graph thatspecifies a dynamic chain of actions for IoT devices.

FIG. 3 is a schematic diagram that illustrates functionalities performedby components of the networked environment for a dynamic chain ofactions.

FIG. 4 is a flowchart that illustrates functionalities performed bycomponents of the networked environment for a dynamic chain of actions.

FIG. 5 is another flowchart that illustrates functionalities performedby components of the networked environment for a dynamic chain ofactions.

DETAILED DESCRIPTION

The present disclosure relates to systems and methods for controlling adynamic chain of actions for Internet-of-Things (IoT) devices. In an IoTdeployment, variety of sensors, actuators, and other IoT devices can bedeployed to take care of the entire process pipeline related to thatindustry. Command architectures can send individual commands, butexisting architectures can be poorly equipped to handle complex,multiple-step, and dynamic sequences. As a result, there is a need formore effective command architectures for IoT command sequencing.However, the present disclosure provides mechanisms for controlling adynamic chain of actions for IoT devices.

For example, the systems and methods described can tie a sequence ofoperations across a set of IoT devices, and across multiple edgedevices. This can provide for a controlled and automated processpipeline. When an IoT device generates an event, the event can lead to adirected series of actions that can include actions performed insequence and/or in parallel by the IoT device that generated the event,as well as other devices. This can prevent mistakes in a processpipeline.

Turning now to FIG. 1, an example of a networked environment 100 isshown. The networked environment 100 can include a computing environment103, client devices 106, various computing systems 109, and IoT devices112 having one or more sensors, and edge devices 114, in communicationwith one other over a network 122. The network 122 can include, forexample, the Internet, intranets, extranets, wide area networks (WANs),local area networks (LANs), wired networks, wireless networks, othersuitable networks, or any combination of two or more such networks.

The network 122 of the networked environment 100 can include satellitenetworks, cable networks, Ethernet networks, telephony networks, andother types of networks. The computing systems 109 can include devicesinstalled in racks 118 a . . . 118 n (collectively “racks 118”), whichcan make up a server bank, aggregate computing system, or a computerbank in a data center or other like facility. In some examples, thecomputing systems 109 can include high-availability computing systems,which include a group of computing devices that acts as a single systemand provides a continuous uptime. The devices in the computing systems109 can include any number of physical machines, virtual machines,virtual appliances, and software associated therewith, such as operatingsystems, drivers, hypervisors, scripts, and applications.

The computing systems 109, and the various hardware and softwarecomponents contained therein, can include infrastructure of thenetworked environment 100 that provides one or more computing services.Computing services can include alert services or other applicationprogramming interface (API) services. For instance, the computingservices can provide an application programming interface that permitsan application or service to generate, store, retrieve, delete orotherwise interact with alerts. The alerts may be stored in a data store142 that can include memory accessible by one or more of a plurality ofservers 124 a . . . 124 n (collectively “servers 124”). For instance,the data store 142 can include one or more relational databases, such asstructured query language databases, non-SQL databases, time-seriesdatabases, or other relational or non-relational databases.

The computing environment 103 can include an enterprise computingenvironment that includes hundreds, or thousands of physical machines,virtual machines, and other software implemented in devices stored inracks 118, distributed geographically, and connected to one anotherthrough the network 122. As such, the computing environment 103 can bereferred to as a distributed computing environment in some examples. Itis understood that any virtual machine or virtual appliance isimplemented using at least one physical device, such as a server orother computing device.

The devices in the racks 118 can include various physical computingresources. The physical computing resources can include physicalcomputing hardware, such as memory and storage devices, servers 124,switches 127 a . . . 127 n, graphics cards having one or more GPUs 130 a. . . 130 n installed thereon, central processing units (CPUs), powersupplies, and similar devices. The devices, such as servers 124 andswitches 127, can have dimensions suitable for quick installation inslots 133 a . . . 133 n on the racks 118.

In various examples, the servers 124 can include requisite physicalhardware and software to create and manage virtualizationinfrastructure, a cloud computing environment, an on-premiseenvironment, and/or a serverless computing environment. Also, in someexamples, the physical computing resources can be used to providevirtual computing resources, such as virtual machines or other software,such as a computing service.

Each server 124, such as representative server 124 n, can act as a hostin the networked environment 100, and thereby can include one or morevirtual machines (VMs) 136 a . . . 136 n (collectively “virtual machines136”). In some examples, a hypervisor 139 can be installed on a server124 to support a virtual machine execution space. One or more virtualmachines 136 can be concurrently instantiated and executed in thevirtual machine execution space. The hypervisor 139 can include the ESX™hypervisor by VMware®, the ESXi™ hypervisor by VMware®, or a similarhypervisor 139 in some examples. It is understood that the computingsystems 109 can be scalable, meaning that the computing systems 109 inthe networked environment 100 can increase or decrease dynamically toinclude or remove servers 124, switches 127, GPUs 130, power sources,and other components without downtime or otherwise impairing theperformance of the computing services offered up by the computingsystems 109.

Referring now to the computing environment 103, the computingenvironment 103 can include a server 124 or any other system providingcomputing capability. Alternatively, the computing environment 103 caninclude one or more computing devices that are arranged in one or moreserver banks, computer banks, computing clusters, or other arrangements.The computing environment 103 can include a grid computing resource orany other distributed computing arrangement. The computing devices canbe located in a single installation or can be distributed among manydifferent geographical locations. The computing environment 103 caninclude or be operated as one or more virtualized computer instances insome examples. Although shown separately from the computing systems 109,it is understood that in some examples the computing environment 103 canbe included as all of, or a part of, the computing systems 109.

For purposes of convenience, the computing environment 103 is sometimesreferred to herein in the singular. Even though the computingenvironment 103 is referred to in the singular, it is understood that aplurality of computing environments 103 can be employed in the variousarrangements as described above. As the computing environment 103communicates with the computing systems 109 and the client devices 106over the network 122. Additionally, in various examples, the computingenvironment 103 can be implemented in servers 124 of a rack 118 and canmanage operations of a virtualized or cloud computing environmentthrough interaction with the computing services.

The computing environment 103 can include a data store 142, which caninclude one or more databases in some examples. The data store 142 caninclude memory of the computing environment 103, mass storage resourcesof the computing environment 103, or any other storage resources onwhich data can be stored by the computing environment 103. The datastore 142 can include memory of the servers 124 in some examples. Thedata store 142 can include one or more relational databases, such asstructured query language databases, non-SQL databases, or otherrelational or non-relational databases. The data stored in the datastore 142 can be associated with the operation of the various servicesor functional entities described below.

The data store 142 can include event definitions 144, which can includeor specify actions, states, and sensor readings that can be identifiedbased on IoT event data 154 received from IoT devices 112. IoT eventdata 154 can also include logical grouping information for each of theIoT devices 112, such as the edge device 114 through which it connects.

The event definitions 144 can refer to predefined events that are basedon states, sensor readings, device parameters, and other actions orcapabilities of an IoT device 112. An event definition 144 cancorrespond to an event or step of an IoT dependency graph 156. Theevaluation service 160 of the management service 120 can identify thatan event definition 144 has occurred based on the IoT event data 154.The evaluation service 160 can then identify an IoT dependency graph 156that has an initial step or event that corresponds to that eventdefinition 144. The evaluation service 160 can then guide a workflowaccording to the IoT dependency graph 156.

The IoT dependency graph 156 can specify a multiple-step-dependencyworkflow and/or a multiple-IoT-device workflow. Amultiple-step-dependency workflow can be specified in an IoT dependencygraph 156 in which at least two events are specified to occur insequence prior to a final event. In other words, at least one eventspecified in the IoT dependency graph 156 can depend on a prerequisitesequence that includes multiple event steps. A multiple-IoT-deviceworkflow can refer to a workflow that includes a sequence of eventsperformed by multiple IoT devices 112.

While an IoT dependency graph 156 can be represented in graphical formas shown in FIGS. 2A and 2B, the IoT dependency graph 156 a can also berepresented as a table, a linked list data structure, a markup language,or another code or data structure. A nonlimiting example of an IoTdependency graph 156 is provided in Table 1.

TABLE 1 { “sourceEdgeDeviceId”: “deviceId”, “sourceThingId”: “thingId”,“sourceAction”: “action name”, “sourceCondition”: “memory > limit”,(Optional) “destinationAction”: [ “action name1”, “action name2” ],“destinationEdgeDeviceId”: “deviceId”, “destinationThingId”: “thingId”,“destinationCondition”: “cpu < limit” (Optional) }

The evaluation service 160 can analyze the IoT dependency graph 156 andread or retrieve command information from the IoT knowledge structure158, which can include one or more tables, databases, or other datastructures. The IoT knowledge structure 158 can specify a set ofcapabilities or actions that can be performed by of each of the IoTdevices 112, as well as commands that cause the IoT device 112 toperform the action. The commands can be provided in an appropriate IoTdevice communication protocol. The evaluation service 160 can, for eachstep or event of the IoT dependency graph 156, identify the IoT device112 and IoT device action specified. The evaluation service 160 can thenidentify appropriate commands and communication protocol that theevaluation service 160 can use to direct the IoT device 112 to performthe specified action, such as changing a configuration, providing asensor parameter, activating an actuator, powering on, powering off, orother actions.

The IoT knowledge structure 158 can be seeded or populated by themanagement service 120. The management service 120 can collectinformation by querying or analyzing the IoT devices 112, or a networkservice associated with a manufacturer or provider of the IoT devices112. Users can also manually enter or upload information into the IoTknowledge structure 158 through a console user interface. A nonlimitingexample of a record within the IoT knowledge structure 158 is providedin Table 2.

TABLE 2 “name”: “device name”, “model”: “model number”, “version”:“version number”, “actions”: [ { “name”: “action name”, “command”:“command or script location in device or script”, “arguments”: [ “arg1”,“arg2” ] } ] }

Accordingly, the IoT knowledge structure 158 can specify an IoT devicetype (or edge device type) according to a device type identifier, orname, model number, version number, and/or other information. The IoTknowledge structure 158 can further specify a set of one or more actionsthat can be performed by the IoT devices 112 of that IoT device type.The actions can include an action name or identifier, a command thatcauses the action to be performed, and arguments that are provided toperform the action. The command can include a script and/or a locationwhere a script is stored. The command can be provided in an appropriateprotocol. The IoT knowledge structure 158 can also provide a list ofdeployed IoT devices 112 or edge devices 114 that correspond to thedevice type. The list can include IoT device identifiers and edgedevices identifiers that are unique to a particular IoT device 112 oredge device 114.

The components executed on the computing environment 103 can include anevaluation service 160, as well as other applications, services,processes, systems, engines, or functionality not discussed in detailherein. The evaluation service 160 can provide an administrator consolehaving one or more interfaces to create, read, update, or delete eventdefinitions 144, IoT dependency graphs 156, and the IoT knowledgestructure 158. In some examples, the evaluation service 160 includes adata point evaluator that evaluates IoT event data 154 and triggers theperformance of an IoT dependency graph 156. If one or more steps of theIoT dependency graph fail after initiation, a notification or alertmessages can be transmitted to an administrator, IT professional, oranother user. Further, the evaluation service 160 can serve up one ormore user interfaces that can be accessed by the client device 106 toread or acknowledge such notifications. The evaluation service 160 canbe executed at a server layer, for example, in a local server or remotecloud server.

The evaluation service 160 can also be performed and executed in at anedge layer, such as in an edge device 114. The edge device 114 can storeor otherwise have local access to the event definitions 144, IoTdependency graphs 156, and an IoT knowledge base or structure 158. Themanagement service 120 can determine whether an IoT dependency graph 156is evaluable at the edge layer. If the IoT dependency graph 156specifies IoT devices 112 that are connected to a single edge device114, then the IoT dependency graph is evaluable at an edge layer, andthe management service 120 or evaluation service 160 can transmit theIoT dependency graph 156 to the specified edge device 114 for edge layerevaluation. However, if the IoT dependency graph 156 specifies IoTdevices 112 that are connected to multiple different edge devices 114,then the management service 120 can store the IoT dependency graph 156in the data store 142 for server layer evaluation.

The various physical and virtual components of the computing systems 109can process workloads 180 a . . . 180 n. Workloads 180 can refer to theamount of processing that a server 124, switch 127, GPU 130, or otherphysical or virtual component has been instructed to process or route ata given time. The workloads 180 can be associated with virtual machines136, public cloud services, private cloud services, hybrid cloudservices, virtualization services, device management services,containers, or other software executing on the servers 124.

The IoT devices 112 can include “things” in the IoT networks, such asobjects or devices having one or more sensors thereon, such as a camera,temperature sensor, humidity sensor, microphone or audio sensor,presence sensor, or other sensors. To this end, the IoT devices 112 caninclude touch sensors; physical input devices such as keypads, buttons,and switches; cameras; physical actuators, such as locks; automotivesensors, such as fuel sensors, temperature sensors, engine sensors, andtire sensors; manufacturing sensors, such as assembly line sensors; andindustrial sensors, such as windmill and solar panel sensors.

In some examples, IoT devices 112 do not include a wide area networkinterface, but can include hardware to communicate IoT event data 154 toan edge device 114 located at or near the IoT devices 112. IoT eventdata 154 can correspond to states, actuator positions, online statuses,device settings, software errors, software versions, and other IoTevents. IoT devices 112 can communicate data to edge devices 114 throughconnections that utilize Bluetooth®, Zigbee®, or other suitable IoTcommunication protocols. In some cases, the edge devices 114 canevaluate the IoT event data 154 at the edge layer, and in other cases,the edge devices 114 can relay or route the IoT event data 154 to thecomputing environment 103 for server layer evaluation. As such, the edgedevices 114 can be referred to as gateways as they include a networkingmodule that permits remote communication over the Internet or othersuitable networks 122.

In some examples, an edge device 114 can include an agent application169 that oversees operation of the edge device 114 as well as IoTdevices 112 to which the edge device 114 is paired or assigned. Theagent application 169 can include instructions that operate inconjunction with the management service 120. An IoT device 112 caninclude a smart lock that secures a door to a home or business using akeypad that requires entry of a predefined sequence of numbers to open.The IoT device 112 may not have the capability of communicating IoTevent data 154 over the network 122, for instance, to a server 124 orthe computing environment 103. As such, the IoT device 112 can collectsuccessful or unsuccessful attempts to open the smart lock and send thedata associated therewith to an edge device 114. The evaluation service160 of the edge device 114 can evaluate the successful or unsuccessfulattempts in order to initiate and/or perform sequenced events of an IoTdependency graph 156. Alternatively, the edge device 114 can forward theIoT event data 154 to the computing environment 103. The edge device 114that lacks the evaluation service 160 can act as a proxy that routes thedata to the computing environment 103 over the Internet.

FIG. 2A shows a graphical representation of an IoT dependency graph 156a. The IoT dependency graph 156 a can include a directed acyclic graph,or a graph of another type of dependency structure. The evaluationservice 160 can direct a dynamic chain of actions based on the IoTdependency graph 156 a.

The IoT dependency graph 156 a can be generated based on user-specifiedevents entered through a console user interface of the managementservice 120. For example, the user can specify that IoT event A of IoTdevice T1 triggers IoT event B of IoT device T2. IoT event B of IoTdevice T2 triggers IoT event C of IoT device T3. Each of the events canbe specified by a single user, or respective events can be specified bydifferent respective users. In this example, the IoT devices T1, T2, andT3 can each be connected to a network 122 through edge device D1. Theuser can specify the edge devices manually, or the management service120 can reference the IoT knowledge structure 158 to identify that IoTdevices T1, T2, and T3 each connect through edge device D1.

The management service 120 or the evaluation service 160 can analyzethese user-specified events to generate the IoT dependency graph 156 a.The IoT dependency graph 156 a can indicate a sequenced set of IoTevents that includes IoT event A, IoT event B, and IoT event C. Thesequence of events can be indicated by a parent identifier correspondingto one or more prerequisite events or actions. A nonlimiting example ofthe IoT dependency graph 156 a is provided in Table 3.

TABLE 3 [ { “event”: “A”, “thingId”: “T1”, “deviceId”: “D1”, “parentId”:null }, { “event”: “B”, “thingId”: “T2”, “deviceId”: “D1”, “parentId”:“A” }, { “event”: “C”, “thingId”: “T3”, “deviceId”: “D1”, “parentId”:“B” }, ]

In table 3, the prerequisites events are specified as parent identifierscorresponding to event identifiers, however, prerequisites can alsorefer to things, devices, and other identifiers. Multiple prerequisiteevents can be specified. The IoT event A can be considered an initialIoT event of the IoT dependency graph 156 a. The IoT event A can specifyan edge device identifier D1 of an edge device 114, an IoT deviceidentifier T1 of an IoT device 112, and the IoT event A. In thisexample, the IoT event A can refer to a name or identifier associatedwith an action or multiple actions. IoT event A can include an action,state, or sensor reading associated with the IoT device T1. IoT event Acan also specify conditions or parameters of the specified edge deviceD1. The initial IoT event A of the IoT dependency graph 156 a can beutilized as a trigger to perform the rest of the IoT dependency graph156 a.

The evaluation service 160 can receive IoT event data 154 that specifiesedge device identifier D1, IoT device identifier T1, and eventidentifier A. A nonlimiting example of the IoT event data 154 isprovided in table 4.

TABLE 4 { “edgedeviceId”: “D1”, “thingId”: “T1”, “event”: “event A” }

IoT event A can correspond to reading a sensor parameter, activating anactuator, changing a configuration, and other actions. In other words,receiving IoT event data 154 specifying IoT event A can indicate that asensor parameter has been read, that a configuration has changed, orthan an actuator has been actuated. As a result, IoT event A can furtherspecify a parameter value, a configuration, an actuator position, orother appropriate information.

The evaluation service 160 can determine that the initial IoT event A ofIoT dependency graph 156 a matches the received IoT event data 154. Theevaluation service 160 can then perform the workflow specified accordingto IoT dependency graph 156 a. Specifically, the evaluation service 160can identify the next position in the IoT dependency graph 156 a, andperform the IoT event B that is specified for that position. In otherwords, the evaluation service 160 can perform IoT event B in response todetermining that the specified prerequisite or parent IoT event A iscompleted.

In order to perform IoT event B, the evaluation service 160 can query orsearch the IoT knowledge structure 158 based on IoT event B (or theaction or parameter corresponding to IoT event B), IoT device T2, and/oredge device D1. The IoT knowledge structure 158 can specify a command toperform the event B. The IoT knowledge structure 158 can also specify anetwork endpoint of the IoT device T2 to transmit the command, and astorage location of the command. The evaluation service 160 can thentransmit the command to perform IoT event B to the network endpoint ofthe IoT device T2. The IoT device T2 can return IoT event data 154 witha confirmation that the IoT event B has been performed.

Once IoT event B is performed, the evaluation service 160 can identifythe next event or set of events in the IoT dependency graph 156 a, andperform the specified event. Here, the next event is event C. Theevaluation service 160 can also perform event C in response todetermining that the specified prerequisite or parent IoT event B iscompleted. The evaluation service 160 can query or search the IoTknowledge structure 158 based on IoT event C, IoT device T3, and/or edgedevice D1 to identify a command to perform the IoT event C. Theevaluation service 160 can transmit the command to perform IoT event Cto the network endpoint of the IoT device T3.

Since all of the IoT devices specified in the IoT dependency graph 156 aare connected to a single edge device D1, the IoT dependency graph 156 acan be considered evaluable at an edge layer. The management service 120can determine whether the hardware capabilities of the edge device D1meet or exceed threshold hardware requirements to process the IoTdependency graph 156 a, and store the IoT knowledge structure 158 andthe IoT dependency graph 156 a. The hardware requirements can includecompute, memory, and data storage requirements. The management service120 can transmit the IoT dependency graph 156 a to the edge device D1for edge layer evaluation if the edge device D1 is adequate to processthe IoT dependency graph 156 a.

FIG. 2B shows a graphical representation of an IoT dependency graph 156b. The IoT dependency graph 156 b can include a directed acyclic graph,or a graph of another type of dependency structure. The evaluationservice 160 can direct a dynamic chain of actions based on the IoTdependency graph 156 b.

The IoT dependency graph 156 b can indicate a sequenced set of IoTevents that includes IoT event D, IoT event E, IoT event F, IoT event G,and IoT event H. IoT event D can specify an edge device identifier D1 ofan edge device 114, an IoT device identifier T1 of an IoT device 112,and event D. Event D can include an event identifier and correspondingvalues for an action, state, or sensor reading associated with the IoTdevice T1. The event D can also specify conditions or parameters of thespecified edge device D1. The initial IoT event A of the IoT dependencygraph 156 b can be utilized as a trigger to perform the rest of the IoTdependency graph 156 b.

The evaluation service 160 can receive IoT event data 154 that specifiesedge device identifier D1, IoT device identifier T1, and eventidentifier D. The evaluation service 160 can determine that the initialIoT event D of IoT dependency graph 156 b matches the received IoT eventdata 154. The evaluation service 160 can then perform the workflowspecified according to IoT dependency graph 156 b. Specifically, theevaluation service 160 can identify the next position in the IoTdependency graph 156 b, and perform the IoT events E, F, and G that arespecified for that position. The IoT events E, F, and G can be performedsimultaneously or concurrently. In other words, the evaluation service160 can perform IoT events E, F, and G in response to determining thatthe shared prerequisite event D for each of these events is completed.

As mentioned above, the evaluation service 160 can query or search theIoT knowledge structure 158 based on the respective IoT events E, F, andG, as well as their corresponding IoT devices 112, and/or edge devices114. In this example, IoT event E is performed by IoT device T2, IoTevent F is performed by IoT device T3, and IoT event G is performed byIoT device T 1. While IoT device Ti is connected through edge device D1,IoT devices T2 and T3 are connected to a different edge device D2. Sincethe IoT dependency graph 156 b specifies more than one edge device 114,it is unevaluable at the edge layer, and should be stored and evaluatedat a local or cloud server layer. The evaluation service 160 canidentify and transmit commands corresponding to each of the IoT eventsE, F, and G. The IoT devices 112 can return confirmations that the IoTevents have been performed.

Once IoT events E, F, and G are performed, the evaluation service 160can identify the next event H that is specified according to the IoTdependency graph 156 b. The evaluation service 160 can perform event Hin response to determining that the specified prerequisite IoT events E,F, and G are all completed. The evaluation service 160 can query orsearch the IoT knowledge structure 158 based on IoT event H to identifya command to perform the IoT event H. The evaluation service 160 cantransmit the command to perform IoT event H to a network endpoint of theIoT device T4.

FIG. 3 is a schematic diagram that illustrates functionalities performedby components of the networked environment 100 to perform a dynamicchain of actions based on an IoT dependency graph 156. The IoTdependency graph 156 can indicate a sequenced set of IoT events thatincludes IoT event A, IoT event B, and IoT event C.

IoT event A can specify an edge device identifier of an edge device 114a and an IoT device identifier of an IoT device 112 a. IoT event A caninclude an event identifier and corresponding values for an action,state, or sensor reading associated with the IoT device 112 a. IoT eventA can also specify conditions or parameters of the specified edge device114 a. Initial IoT event A of the IoT dependency graph 156 can beutilized as a trigger to perform the rest of the IoT dependency graph156.

IoT event B can specify an edge device identifier of an edge device 114a and an IoT device identifier of an IoT device 112 b. IoT event B caninclude an event identifier for an action, state, or sensor readingassociated with the IoT device 112 b, as well conditions or parametersof the specified edge device 114 a.

IoT event C can specify an edge device identifier of an edge device 114b and an IoT device identifier of an IoT device 112 c. IoT event C caninclude an event identifier for an action, state, or sensor readingassociated with the IoT device 112 c, as well conditions or parametersof the specified edge device 114 b. Since this IoT dependency graph 156includes multiple edge devices 114, it is unevaluable at an edge layer,and should be stored and evaluated at a local or cloud server layer.

In step 301, the evaluation service 160 can receive IoT event data 154that specifies IoT event A. For example, the IoT event data 154 canindicate that an action, state, or sensor reading corresponding to eventA has been performed by IoT device 112 a, which is connected to edgedevice 114 a. The evaluation service 160 can determine that the initialIoT event A of IoT dependency graph 156 matches the received IoT eventdata 154, and perform the subsequent events according to the sequencespecified in IoT dependency graph 156.

The evaluation service 160 can perform IoT event B in response todetermining that its prerequisite event A is completed. The evaluationservice 160 can query or search the IoT knowledge structure 158 based onthe IoT event B, the IoT device 112 b, and the edge devices 114 a. Theevaluation service 160 can identify, from the IoT knowledge structure158, a command to perform IoT event B and a network endpoint of the IoTdevice 112 b. The evaluation service 160 can retrieve all requiredcommands before commencing the workflow or dynamic chain of eventsspecified by the IoT knowledge structure 158.

In step 302, the evaluation service 160 can transmit the command toperform event B to the appropriate network endpoint of the IoT device112 b. The evaluation service 160 can transmit the command to the edgedevice 114 a, which can relay the command to the IoT device 112 b. TheIoT device 112 b can perform the event B according to the command, aswell as any arguments or parameters specified.

In step 303, the IoT device 112 b can return a confirmation that theevent B is completed. The IoT device 112 b can transmit IoT event data154 for event B to the edge device 114 a, which can route or relay thisIoT event data 154 to the evaluation service 160. The evaluation service160 can identify that the event B is completed and direct theperformance of event C according to the IoT dependency graph 156. Theevaluation service 160 can query or search the IoT knowledge structure158 based on the IoT event C, the IoT device 112 c, and the edge devices114 b. The evaluation service 160 can identify, from the IoT knowledgestructure 158, a command to perform IoT event C and a network endpointof the IoT device 112 c.

In step 304, the evaluation service 160 can transmit the command toperform event C to the appropriate network endpoint of the IoT device112 c. The evaluation service 160 can transmit the command to the edgedevice 114 b, which can relay the command to the IoT device 112 c. TheIoT device 112 c can perform the event C according to the command, alongwith any arguments or parameters that are specified.

In step 305, the IoT device 112 c can return a confirmation that theevent C is completed. The IoT device 112 c can transmit IoT event data154 for event C to the edge device 114 b, which can route or relay thisIoT event data 154 to the evaluation service 160.

Moving to FIG. 4, a flowchart is shown that provides one example of theoperation of a portion of the networked environment 100. While theflowchart of FIG. 4 can generally be viewed as depicting an example ofelements of a method implemented by the evaluation service 160 executingin the computing environment 103, additional functionality is performedby other components of the networked environment 100. The separation orsegmentation of functionality as discussed herein is presented forillustrative purposes only. Steps can be omitted or scrambled inrelative order as compared to the order shown and described.

In step 403, the evaluation service 160 can monitor IoT devices 112 toidentify IoT event data 154. The IoT event data 154 can includeinformation about an IoT event that has occurred with respect to an IoTdevice 112. IoT event data 154 can specify an edge device identifier ofan edge device 114 and an IoT device identifier of an IoT device 112.IoT event data 154 can include an event identifier and correspondingvalues for an action, state, or sensor reading associated with the IoTdevice 112.

In step 406, the evaluation service 160 can determine whether the IoTdevice 112 is valid. For example, if the IoT event data 154 is receivedfrom an IoT device 112 that is enrolled or registered with themanagement service 120, then the IoT device 112 can be considered valid.The evaluation service 160 can access or query the IoT knowledgestructure 158 to determine whether a device record associated with theIoT device 112 exists, and whether the record indicates that the IoTdevice 112 is enrolled and registered. In some cases, a compliancestatus of the IoT device 112 can also be required for the IoT device 112to be considered valid. If the IoT device 112 is valid the process canmove to step 409.

In step 409, the evaluation service 160 can determine whether the IoTevent data 154 matches an initial IoT event specified in an IoTdependency graph 156. The initial IoT event of the IoT dependency graph156 can be a first IoT event or an IoT event that specifies noprerequisite events. For example, if the initial IoT event of the IoTdependency graph 156 indicates the same edge device identifier, IoTdevice identifier, as well as the same event identifier andcorresponding values as the IoT event data 154, then the IoT event data154 matches the initial IoT event. If the IoT event data 154 matches theinitial IoT event the process can move to step 412.

In step 412, the evaluation service 160 can determine whether togenerate a notification. For example, a notification setting can beconfigured through a console user interface of the management service120. The notification setting can indicate whether initiation of all, orindividual ones, of the IoT dependency graphs 156 should cause anotification to be transmitted to a client device or provided throughthe console user interface.

In step 415, a notification can be generated. For example, if thenotification setting indicates that initiation of the matching IoTdependency graph 156, or all IoT dependency graphs 156, should result ina notification, then the evaluation service 160 can generate andtransmit the notification.

In step 418, the evaluation service 160 can perform a workflow ordynamic chain of actions according to the IoT dependency graph 156. Forexample, the evaluation service 160 can analyze the IoT dependency graph156 to identify each respective IoT event specified, retrieveappropriate commands from an IoT knowledge structure 158, and transmitthe commands to IoT devices in the sequence specified by the IoTdependency graph 156. This process is discussed further with respect toFIG. 5.

FIG. 5 shows a flowchart that provides one example of the operation of aportion of the networked environment 100. While the flowchart of FIG. 5can be viewed as depicting an example of elements of a methodimplemented by the evaluation service 160 executing in the computingenvironment 103, additional functionality is performed by othercomponents of the networked environment 100. Generally, FIG. 5 shows howthe evaluation service 160 can perform a dynamic chain of actions orworkflow specified in an IoT dependency graph 156 that has beeninitiated. The separation or segmentation of functionality as discussedherein is presented for illustrative purposes only. Steps can be omittedor scrambled in relative order as compared to the order shown anddescribed.

In step 503, the evaluation service 160 can identify a current IoT eventor events specified in an IoT dependency graph 156 that has beeninitiated. As discussed above, the IoT dependency graph can be initiatedonce received IoT event data 154 indicates that an initial eventspecified in the IoT dependency graph 156 has occurred. The evaluationservice 160 can analyze the IoT dependency graph 156 to identify one ormore current IoT events that indicate the initial event as aprerequisite. As a result, the current IoT event refers to an IoT eventthat is subsequent to the initial IoT event of the IoT dependency graph156. Since the process is iterative, in later iterations, the evaluationservice 160 can analyze the IoT dependency graph 156 to identify one ormore current IoT events that indicate any previously completed event asa prerequisite event. Multiple events can be indicated as prerequisiteevents.

In step 506, the evaluation service 160 can generate a command for oneor more current IoT events. Once a current IoT event is identified forthe previously completed event, the evaluation service 160 can identifyhow to direct an IoT device 112 specified for the current IoT event toperform the IoT event. For example, the evaluation service 160 can queryor access an IoT knowledge structure 158 based on the current IoT eventand identify commands that cause the IoT device 112 to perform thecurrent IoT event. The evaluation service 160 can then transmit thecommand to the IoT device 112 to perform the current IoT event.

In step 509, the evaluation service 160 can receive IoT event data 154corresponding to the current IoT event. The received IoT event data 154can indicate that the current IoT event has been completed by the IoTdevice 112. If the current event fails to complete within apredetermined time period, the evaluation service 160 can retry byre-sending the command to perform the current IoT event. After apredetermined number of retries, or another predetermined time period,the evaluation service 160 can generate and provide an IT professionalwith a notification to manually complete the IoT event or otherwiseservice the specified IoT device 112.

In step 512, the evaluation service 160 can update a graph sequence ofthe IoT dependency graph 156. For example, the evaluation service canmaintain a graph sequence for the IoT dependency graph 156 that is beingperformed. The graph sequence can indicate a completion status for eachIoT event specified in the IoT dependency graph 156. Once the currentIoT event is completed, the graph sequence can be updated to indicate acomplete status rather than an incomplete status for the current IoTevent. The evaluation service 160 can then move to step 503 in aniterative process, until the graph sequence indicates that all of theIoT events specified in the IoT dependency graph 156 are completed.

Stored in the device memory are both data and several components thatare executable by the processor. Also stored in the memory can be a datastore and other data. A number of software components are stored in thememory and executable by a processor. In this respect, the term“executable” means a program file that is in a form that can ultimatelybe run by the processor. Examples of executable programs can be, forexample, a compiled program that can be translated into machine code ina format that can be loaded into a random access portion of one or moreof the memory devices and run by the processor, code that can beexpressed in a format such as object code that is capable of beingloaded into a random access portion of the one or more memory devicesand executed by the processor, or code that can be interpreted byanother executable program to generate instructions in a random accessportion of the memory devices to be executed by the processor. Anexecutable program can be stored in any portion or component of thememory devices including, for example, random access memory (RAM),read-only memory (ROM), hard drive, solid-state drive, USB flash drive,memory card, optical disc such as compact disc (CD) or digital versatiledisc (DVD), floppy disk, magnetic tape, or other memory components.

Memory can include both volatile and nonvolatile memory and data storagecomponents. In addition, a processor can represent multiple processorsand/or multiple processor cores, and the one or more memory devices canrepresent multiple memories that operate in parallel processingcircuits, respectively. Memory devices can also represent a combinationof various types of storage devices, such as RAM, mass storage devices,flash memory, or hard disk storage. In such a case, a local interfacecan be an appropriate network that facilitates communication between anytwo of the multiple processors or between any processor and any of thememory devices. The local interface can include additional systemsdesigned to coordinate this communication, including, for example,performing load balancing. The processor can be electric or of someother available construction.

Client devices 106 can be used to access user interfaces generated toconfigure or otherwise interact with the computing environment 103.These client devices 106 can include a display upon which a userinterface generated by a client application for providing a virtualdesktop session (or other session) can be rendered. In some examples,the user interface can be generated using user interface data providedby the computing environment 103. The client device 106 can also includeone or more input/output devices that can include, for example, acapacitive touchscreen or other type of touch input device, fingerprintreader, or keyboard.

Although the various services and applications described herein can beembodied in software or code executed by general-purpose hardware asdiscussed above, as an alternative, the same can also be embodied indedicated hardware or a combination of software/general purpose hardwareand dedicated hardware. If embodied in dedicated hardware, each can beimplemented as a circuit or state machine that employs any one of or acombination of a number of technologies. These technologies can includediscrete logic circuits having logic gates for implementing variouslogic functions upon an application of one or more data signals,application specific integrated circuits (ASICs) having appropriatelogic gates, field-programmable gate arrays (FPGAs), or othercomponents.

The sequence diagram and flowcharts show an example of the functionalityand operation of an implementation of portions of components describedherein. If embodied in software, each block can represent a module,segment, or portion of code that can include program instructions toimplement the specified logical function(s). The program instructionscan be embodied in the form of source code that can includehuman-readable statements written in a programming language or machinecode that can include numerical instructions recognizable by a suitableexecution system such as a processor in a computer system or othersystem. The machine code can be converted from the source code. Ifembodied in hardware, each block can represent a circuit or a number ofinterconnected circuits to implement the specified logical function(s).

Although the sequence diagram flowcharts show a specific order ofexecution, it is understood that the order of execution can differ fromthat which is depicted. For example, the order of execution of two ormore blocks can be scrambled relative to the order shown. In addition,two or more blocks shown in succession can be executed concurrently orwith partial concurrence. Further, in some examples, one or more of theblocks shown in the drawings can be skipped or omitted.

Also, any logic or application described herein that includes softwareor code can be embodied in any non-transitory computer-readable mediumfor use by or in connection with an instruction execution system suchas, for example, a processor in a computer system or other system. Inthis sense, the logic can include, for example, statements includingprogram code, instructions, and declarations that can be fetched fromthe computer-readable medium and executed by the instruction executionsystem. In the context of the present disclosure, a “computer-readablemedium” can be any medium that can contain, store, or maintain the logicor application described herein for use by or in connection with theinstruction execution system.

The computer-readable medium can include any one of many physical media,such as magnetic, optical, or semiconductor media. More specificexamples of a suitable computer-readable medium include solid-statedrives or flash memory. Further, any logic or application describedherein can be implemented and structured in a variety of ways. Forexample, one or more applications can be implemented as modules orcomponents of a single application. Further, one or more applicationsdescribed herein can be executed in shared or separate computing devicesor a combination thereof. For example, a plurality of the applicationsdescribed herein can execute in the same computing device, or inmultiple computing devices.

It is emphasized that the above-described examples of the presentdisclosure are merely possible examples of implementations set forth fora clear understanding of the principles of the disclosure. Manyvariations and modifications can be made to the above-describedembodiments without departing substantially from the spirit andprinciples of the disclosure. All such modifications and variations areintended to be included herein within the scope of this disclosure.

What is claimed is:
 1. A system, comprising: at least one computingdevice; and program instructions stored in at least one memory of the atleast one computing device, wherein the instructions, when executed byat least one processor, cause the at least one computing device to atleast: receive Internet-of Things (IoT) event data from an IoT device;identify an IoT dependency graph that is identified based on an initialIoT event specified by the IoT dependency graph corresponding to the IoTevent data; identify at least one IoT event subsequent to the initialIoT event in the IoT dependency graph; and transmit, to at least one IoTdevice, at least one command for the at least one IoT device to performthe at least one IoT event.
 2. The system of claim 1, wherein theinstructions, when executed by the at least one processor, cause the atleast one computing device to at least: receive, from a respective IoTdevice of the at least one IoT device, an IoT event confirmation; andupdate an IoT graph sequence of the IoT dependency graph based on theIoT event confirmation.
 3. The system of claim 1, wherein theinstructions, when executed by the at least one processor, cause the atleast one computing device to at least: retrieve, from an IoT knowledgestructure, instructions to perform the at least one IoT event; andgenerate, based on the instructions, the at least one command for the atleast one IoT device to perform the at least one IoT event.
 4. Thesystem of claim 1, wherein the IoT dependency graph comprises a directedacyclic graph.
 5. The system of claim 1, wherein the instructions, whenexecuted by the at least one processor, cause the at least one computingdevice to at least: determine that the IoT dependency graph is evaluableat an edge layer based on the IoT dependency graph specifying aplurality of IoT devices that are connected to a single edge device; andtransmit the IoT dependency graph to the single edge device for edgelayer evaluation based on the IoT dependency graph being evaluable atthe edge layer.
 6. The system of claim 1, wherein the instructions, whenexecuted by the at least one processor, cause the at least one computingdevice to at least: determine that the IoT dependency graph isunevaluable at an edge layer based on the IoT dependency graphspecifying a plurality of IoT devices that are connected to a pluralityof edge devices; and store the IoT dependency graph at a server layerfor server layer evaluation based on the IoT dependency graph beingunevaluable at the edge layer.
 7. The system of claim 1, wherein the IoTevent data comprises an edge device identifier, an IoT deviceidentifier, and an event identifier.
 8. A method performed byinstructions executed by at least one computing device, the methodcomprising: receiving, by the at least one computing device, Internet-ofThings (IoT) event data from an IoT device; identifying, by the at leastone computing device, an IoT dependency graph that is identified basedon an initial IoT event specified by the IoT dependency graphcorresponding to the IoT event data; identifying, by the at least onecomputing device, at least one IoT event subsequent to the initial IoTevent in the IoT dependency graph; and transmitting, to at least one IoTdevice, at least one command for the at least one IoT device to performthe at least one IoT event.
 9. The method of claim 8, furthercomprising: receiving, from a respective IoT device of the at least oneIoT device, an IoT event confirmation; and updating an IoT graphsequence of the IoT dependency graph based on the IoT eventconfirmation.
 10. The method of claim 8, further comprising: retrieving,from an IoT knowledge structure, instructions to perform the at leastone IoT event; and generating, based on the instructions, the at leastone command for the at least one IoT device to perform the at least oneIoT event.
 11. The method of claim 8, wherein the IoT dependency graphcomprises a directed acyclic graph.
 12. The method of claim 8, furthercomprising determining that the IoT dependency graph is evaluable at anedge layer based on the IoT dependency graph specifying a plurality ofIoT devices that are connected to a single edge device; transmitting theIoT dependency graph to the single edge device for edge layer evaluationbased on the IoT dependency graph being evaluable at the edge layer. 13.The method of claim 8, further comprising: determining that the IoTdependency graph is unevaluable at an edge layer based on the IoTdependency graph specifying a plurality of IoT devices that areconnected to a plurality of edge devices; and storing the IoT dependencygraph at a server layer for server layer evaluation based on the IoTdependency graph being unevaluable at the edge layer.
 14. The method ofclaim 8, wherein the IoT event data comprises an edge device identifier,an IoT device identifier, and an event identifier.
 15. A non-transitorycomputer-readable medium comprising program instructions that whenexecuted by at least one processor, cause at least one computing deviceto at least: receive Internet-of Things (IoT) event data from an IoTdevice; identify an IoT dependency graph that is identified based on aninitial IoT event specified by the IoT dependency graph corresponding tothe IoT event data; identify at least one IoT event subsequent to theinitial IoT event in the IoT dependency graph; and transmit, to at leastone IoT device, at least one command for the at least one IoT device toperform the at least one IoT event.
 16. The non-transitorycomputer-readable medium of claim 15, wherein the instructions, whenexecuted by the at least one processor, cause the at least one computingdevice to at least: receive, from a respective IoT device of the atleast one IoT device, an IoT event confirmation; and update an IoT graphsequence of the IoT dependency graph based on the IoT eventconfirmation.
 17. The non-transitory computer-readable medium of claim15, wherein the instructions, when executed by the at least oneprocessor, cause the at least one computing device to at least:retrieve, from an IoT knowledge structure, instructions to perform theat least one IoT event; and generate, based on the instructions, the atleast one command for the at least one IoT device to perform the atleast one IoT event.
 18. The non-transitory computer-readable medium ofclaim 15, wherein the IoT dependency graph comprises a directed acyclicgraph.
 19. The non-transitory computer-readable medium of claim 15,wherein the instructions, when executed by the at least one processor,cause the at least one computing device to at least: determine that theIoT dependency graph is evaluable at an edge layer based on the IoTdependency graph specifying a plurality of IoT devices that areconnected to a single edge device; and transmit the IoT dependency graphto the single edge device for edge layer evaluation based on the IoTdependency graph being evaluable at the edge layer.
 20. Thenon-transitory computer-readable medium of claim 15, wherein theinstructions, when executed by the at least one processor, cause the atleast one computing device to at least: determine that the IoTdependency graph is unevaluable at an edge layer based on the IoTdependency graph specifying a plurality of IoT devices that areconnected to a plurality of edge devices; and store the IoT dependencygraph at a server layer for server layer evaluation based on the IoTdependency graph being unevaluable at the edge layer.